// 请实现无重复数字的升序数组的二分查找

// 给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ，写一个函数搜索 nums 中的 target，如果目标值存在返回下标（下标从 0 开始），否则返回 -1

// 数据范围：0 ≤ len(nums) ≤ 2 × 10 ** 5，数组中任意值满足 ∣val∣≤ 10  ** 9
// 进阶：时间复杂度 O(log n) ，空间复杂度 O(1)

function search(nums, target) {
  // write code here
  let start = 0, end = nums.length - 1, index = -1
  while (start <= end) {
    // 注意看题，已经升序排列的数组，二分法关键思路，取(start 和 end)下标中位数的元素进行对比
    let mid = start + Math.floor((end - start) / 2)
    if (nums[mid] === target) {
      index = mid
      break
    }
    // 中间元素小于要查找的元素，就往右边查找，大于则往左边找
    if (nums[mid] < target) {
      start = mid + 1
    } else {
      end = mid - 1
    }
  }
  return index
}
let nums = [-1, 0, 3, 4, 6, 10, 13, 14]
console.log(search(nums, -1))
console.log(search(nums, 13))
console.log(search(nums, 1))

module.exports = {
  search: search,
};